function [ ] = ctrAbatementCostTableWrapper( ets, edat, period_num, table_path, filename, cost_curve_type, allow_hetero, allow_free_cyc)
%% Table of emissions and cost outcomes across all periods

% Run counterfactuals for table
cap = [ round(edat.period.cap(period_num)*10/7,2,'significant') edat.period.cap(period_num)  ];
ctr = etsCounter( ets, cap );

% Set options for step function and whether or not to include heterogeneity
ctr.scenario.iso_type = allow_hetero;
ctr.scenario.costs = cost_curve_type;
ctr.free_cyc_step = allow_free_cyc;

ctr.scenario.regime = 'Market';
ctrM = ctr.run;  

ctr.scenario.regime  = 'Command';
ctr.scenario.ermodel = 'flat';
ctrC1 = ctr.run;

ctr.scenario.ermodel = 'flat_eps';
ctrC2 = ctr.run;

ctr.scenario.ermodel = 'heat';
ctrC3 = ctr.run;

ctr.scenario.ermodel = 'heat_eps';
ctrC4 = ctr.run;

ctr.scenario.ermodel = 'heat_eps_rho';
ctrC5 = ctr.run;

rowLabels = { 'A. Emissions market', ...
    '\addlinespace B. Command and Control', ...
    '\quad 1. Constant emissions rate', ...
    '\quad 2. Constant emissions rate, with error', ...
    '\quad 3. Capacity-based rate', ...
    '\quad 4. Capacity-based rate, with error', ...
    '\quad 5. Capacity-based rate, correlated error' };
counterfactuals = { ctrM, ctrC1, ctrC2, ctrC3, ctrC4, ctrC5 };


%% Print table
full_path  = strcat(table_path, filename);
tabulateCounterResults( counterfactuals, rowLabels, full_path);
